/*=============================================================================
*
*   Copyright (C) 2020 All rights reserved.
*
*   Filename:		build_mesh.hpp
*
*   Author: Wang Zhecheng - wangzhecheng@yeah.net
*
*   Date: 2020-02-27 12:39
*
*   Last Editors: Wang Zhecheng - wangzhecheng@yeah.net
*
*   Last modified:	2020-03-30 18:42
*
*   Description:
*
=============================================================================*/
#ifndef BUILD_MESH_H
#define BUILD_MESH_H

#include "../shape/nodal_dof.hpp"
#include "mesh.hpp"

namespace geoxfem {
namespace geometry {

template <typename MethodPolicy>
struct build_mesh_impl { /*{{{*/
  template <typename Model, typename Mesh>
  static void apply(const boost::property_tree::ptree&, Model&, Mesh&) {
    throw "not implemented yet";
  }
}; /*}}}*/

template <typename Model, typename Mesh>
void BuildMesh(const boost::property_tree::ptree& data, /*{{{*/
               Model&                             model,
               Mesh&                              mesh) {
  return build_mesh_impl<typename Model::MethodPolicy>::apply(data, model,
                                                              mesh);
} /*}}}*/

}  // namespace geometry
}  // namespace geoxfem
#endif /* BUILD_MESH_H */
